package bm.com.framework.common.encrypt;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Util {

    /**
     *  MD5 加密
     * @param text  加密文本
     * @param rad 进制，：16、32
     * @param isUpp
     * @return
     */
    public static String toMd5(String text,int rad,boolean isUpp){
        MessageDigest messageDigest = null;
        try {
            //通过MessageDigest类来的静态方法getInstance获取MessageDigest对象
            messageDigest = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        // 4、获取明文字符串对应的字节数组
        byte[] input = text.getBytes();
        // 5、执行加密
        messageDigest.update(input);
        //这里也可以直接使用byte[] output = messageDigest.digest(input)方法来进行加密，就省略了上面的update方法了
        byte[] output = messageDigest.digest();
        // 6、创建BigInteger对象
        // signum为1表示正数、-1表示负数、0表示0。不写默认表示正数
        BigInteger bigInteger = new BigInteger(1, output);
        // 7、按照16进制(或32进制)将bigInteger转为字符串
        return isUpp ? bigInteger.toString(rad).toUpperCase() : bigInteger.toString(rad);
    }

}
